#define _CRT_SECURE_NO_WARNINGS
//class Solution {
//public:
//    bool lemonadeChange(vector<int>& bills) {
//        int arr[21] = { 0 };
//        for (auto e : bills)
//        {
//            arr[e]++;
//            if (e == 10)
//            {
//                if (arr[5] > 0)
//                    arr[5]--;
//                else
//                    return false;
//            }
//            else  if (e == 20)
//            {
//                if (arr[5] > 0 && arr[10] > 0)
//                {
//                    arr[5]--;
//                    arr[10]--;
//                }
//                else if (arr[5] >= 3)
//                {
//                    arr[5] -= 3;
//                }
//                else
//                    return false;
//            }
//        }
//        return true;
//    }
//};
//
//class Solution {
//public:
//    int halveArray(vector<int>& nums) {
//        priority_queue<double> q(nums.begin(), nums.end());
//        double sum = 0;
//        for (auto e : nums)
//        {
//            sum += e;
//        }
//        double _sum = sum;
//        int step = 0;
//        while (_sum > sum / 2)
//        {
//            double tmp = q.top();
//            tmp /= 2;
//            q.pop();
//            q.push(tmp);
//            step++;
//            _sum -= tmp;
//        }
//        return step;
//    }
//};
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
#include <string>
class Solution {
public:
    struct Com
    {
        bool operator()(const string& l, const string& r)
        {
            if (l + r > r + l)
                return true;
            return false;
            //return l + r > r + l;
        }
    };
    string largestNumber(vector<int>& nums) {
        vector<string> tmp;
        for (auto& e : nums)
        {
            tmp.push_back(to_string(e));
        }
        Com com;
        sort(tmp.begin(), tmp.end(), com);
        if (tmp[0][0] == '0')
            return "0";
        string ret;

        for (auto& e : tmp)
        {
            ret += e;
        }
        return ret;
    }
};

#include <cmath>
#include <iostream>
using namespace std;

bool isPrime(int i)
{
    if (i == 0 || i == 1)
        return false;

    for (int j = 2; j <= sqrt(i); j++)
    {
        if (i % j == 0)
            return false;
    }
    return true;
}
int main() {
    int a;
    cin >> a;
    int ret = 0;
    for (int i = 0; i <= a; i++)
    {
        if (isPrime(i))
        {
            //cout<<i<<endl;
            ret++;
        }
    }
    cout << ret;
    return 0;
}

#include <iostream>
using namespace std;
#include <cmath>
int main() {
    int a;
    cin >> a;
    int ret = 1;
    for (int i = 1; i <= a; i++)
    {
        int count = 1;
        int tmp = i;
        while (tmp >= 10)
        {
            tmp /= 10;
            count++;
        }
        if ((i * i) % (int)pow(10, count) == i)
        {
            // cout<<(i*i)<<":"<<10*count<<endl;
             //cout<<i<<endl;
            ret++;
        }
    }
    cout << ret;
    return 0;
}

int main()
{
    vector<int> nums = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
    cout<<Solution().largestNumber(nums);
    return 0;
}